home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 2
/
Nebula Two.iso
/
Documents
/
Other
/
multiprocessor.txt
< prev
next >
Wrap
Text File
|
1995-06-12
|
3KB
|
59 lines
From: mnp!mpaque@NeXT.COM (Mike Paquette)
Newsgroups: comp.sys.next.hardware
Subject: Supporting multiprocessor platforms under NEXTSTEP
Date: 19 Oct 1994 16:18:17 -0500
Reply-To: mnp!mpaque@NeXT.COM
Watching the recent thread of discussion "Re: Dual Pentium and
NeXTStep?" is rather like watching a game of telephone, with
information mutating from one message to the next. I can't stand it
anymore...
Here's some real information, from press releases, speeches by
assorted officers of NeXT, and whatnot. Nothing here that can't be
found out by anyone willing to do a little research.
1) The NEXTSTEP Mach kernel is based on Mach 2.0, with a number of
enhancements picked up from Mach 2.5. The Mach kernel in NEXTSTEP
3.3 will incorporate additional enhancements from Mach 3.0,
particularly in the areas of scheduling and messaging.
2) The Mach kernel is designed to work in a symmetric multiprocessor
environment. There are two areas that need to be addressed to
implement SMP support (along with several hundred details...).
First, the kernel must be compiled for use with multiple processors.
This causes mutex locks to be compiled into the kernel to serialize
access to critical sections. That's the easy part.
Second, the machine-dependent code needed to manage multiprocessor
initialization, resource management, thread migration, and whatnot
needs to be written. There is a C language API in the Mach kernel
that covers most of the machine dependencies.
In the case of the Intel platforms, this gets tricky, as there are
now FOUR different specifications kicking around for SMP board
design. There are two versions of the Intel-led SMP consortium's
spec, another multi-vendor spec, and even a spec from a consortium of
chip set manufacturers. Three of these specifications have actually
been implemented in hardware to varying degrees.
3) The AppKit is not thread-safe (not even on the old m88k and 601
SMP prototype hardware Mr. Jobs and others have mentioned). Oh, it's
been thought about, but fundamentally the AppKit is an inappropriate
candidate for multithreaded operation. The degree of interlocking
required would effectively serialize the entire kit, with no
performance gain (in fact, a net loss!) over the current kit. Think
of the AppKit as a set of tools used to manipulate the global state
of a GUI, and you may see what I mean.
In general, I think a developer's time and energy would be better
spent decoupling the application's GUI and core functionality,
permitting the GUI to run in one thread, and the core functionality
torun in one or more other threads (or even on a fast back-end
processor through PDO).
Mike Paquette
=====
I don't speak for NeXT, and NeXT doesn't speak for me.